package br.com.duosoftware.orcamento.services;

import br.com.duosoftware.orcamento.daos.PrevisaoFinanceiraDAO;
import br.com.duosoftware.orcamento.entidades.Dotacao;
import br.com.duosoftware.orcamento.entidades.PeriodoDePrograma;

/**
 *
 * @author Daniel
 *
 */
public class DotacaoService {

    public void obterDotacao(Dotacao dotacao){
        
        String orgao = "";
        String unidadeOrcamentaria = "";
        String funcao = "";
        String subFuncao = "";
        String programa = "";
        String tipoDeAcao = "";
        String acao = "";
        
        if(dotacao.getFuncao() != null){
            
            funcao = dotacao.getFuncao().getCodigo();
            
        }
            
        if(dotacao.getSubFuncao() != null){
            
            subFuncao = dotacao.getSubFuncao().getCodigo();
           
        }
        
        if(dotacao.getPrograma() != null){
        
            programa = dotacao.getPrograma().getCodigo();
            orgao = dotacao.getOrgao().getCodigo();
            unidadeOrcamentaria = dotacao.getUnidadeOrcamentaria().getCodigo();
            
        }
        
        if(dotacao.getAcao() != null){
        
            acao = dotacao.getAcao().getNumeroAcao();
            tipoDeAcao =  dotacao.getTipoDeAcao().getCodigo();
            
        }
        
        dotacao.setDotacao(orgao+unidadeOrcamentaria+"-"+funcao+subFuncao+programa+"."+tipoDeAcao+"."+acao);
        
    }
    
    public void obterValorPrevisto(Dotacao dotacao) {

        if (dotacao.getAcao() != null) {

            //Será substrituído pelo ano que o usuário escolhe ao entrar no sistema
            
            int anoEscolhido = 2014;
            
            PeriodoDePrograma periodo = dotacao.getAcao().getPeriodoDePrograma();
            
            //Se o ano escolhido estiver dentro do período de anos do programa, 
            //Executa uma subtração para identificar a referencia do ano (ANO1,ANO2,ANO3,ANO4)
            if (anoEscolhido >= periodo.getAnoInicial() && anoEscolhido <= periodo.getAnoFinal()) {
                
                int anoReferencia = (anoEscolhido - periodo.getAnoInicial()) + 1;

                dotacao.setValorPrevisto(new PrevisaoFinanceiraDAO()
                        .obterSomaDasPrevisoesFinanceiras(dotacao.getAcao(), anoReferencia));

            }

        }

    }

}
